program inversion_of_residuals_ML
! il programma accetta in input un file csv opportunamente formattato in cui
! sono memorizzati (tra altri parametri) l'ampiezza wood-anderson, la distanza ipocentrale,
! tempo origine lat e lon dell'evento, nome di stazione (e canale).
! 
 
    implicit none
    
    include 'seisev_EVENT_PAHSE_structure.FI'
    include 'inversion_of_residuals_ML.FI'
    
    integer k,nd
    character*1 v
    integer stanum(200000),evnum(200000),nsta,nev
    real*4  p1,p2,inverted_mags(ievents),fm_corrs(istations)
    real*8 sigma2_RH,sigma2

    write(*,*)' inversione originale a 2 parametri' 
         
    nd=0
! legge i dati selezionati
    call read_ML_residuals_csv(c,nd,stanum,evnum,nsta,nev)
    
! calcola le magnitudo alla Richter.

    call compute_Richter_ML(c,nd,stanum,evnum,nsta,nev,sigma2_RH)
    

! assegnazione indice d'evento e di stazione fatto via excell.
! Inversione:  
    call find_hutton_boore_like_parameters(c,nd,stanum,evnum,nsta,nev, &
           p1,p2,fm_corrs,inverted_mags)
       
! recompute all magnitudes (althought already inverted) to see if the inverted
! and computed magnitudes show some differences (a possibility is a Huber like weight).
    call recompute_FM_mags(c,nd,stanum,evnum,nsta,nev, &
           p1,p2,fm_corrs,inverted_mags,sigma2)

    pause
    end program
      